home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 April / EnigmA AMIGA RUN 17 (1997)(G.R. Edizioni)(IT)[!][issue 1997-04][EAR-CD].iso / EARCD / comm / misc / zpoint_3_14.lha / zpoint-3.14 / Rexx / AutoMaps.zprx < prev    next >
Text File  |  1995-03-09  |  8KB  |  277 lines

  1. /*  
  2.     $VER: AutoMaps.zprx V2.3 (06.03.1995) © Björn Koch
  3.  
  4.  
  5. Dieses Skript wurde speziell für Zodiac`s Point erstellt, und dient
  6. zur automatischen Brettlistenverwaltung. Dabei wurde eine Anbindung an
  7. den ZP-Brett-Manager (ZPBM) von Frank Meister eingebaut. Mit
  8. AutoMaps.zprx kann man automatisch nach einem einstellbaren Zeitraum
  9. eine neue Brettliste bei MAPS bestellen lassen. Ebenso wird diese nach
  10. Erhalt automatisch auf Wunsch für ZPBM richtig abgespeicht, und
  11. ebenfalls auf Wunsch sofort wieder zum löschen markiert.
  12.  
  13. Ebenso ist eine optionale automatisch Brettüberwachung eingebaut, die
  14. mit der Brettliste auch die Liste der bisher bestellten Bretter bei
  15. MAPS bestellt, und bei Bedarf diese auf fehlende Bretter untersucht.
  16. Auf Wunsch koennen diese auch dirket wieder bestellt werden.
  17.  
  18. Das Skript legt folgende Dateien an (deren Namen frei einstellbar sind):
  19.  
  20.   Brettliste.zp   - Die Liste der verfügbaren Bretter
  21.   MyBretter.zp    - Die Liste der bestellten Bretter
  22.  
  23. Dieses Skript darf beliebig kopieren werden, solange es zusammen mit
  24. Zodiac's Point eingesetzt wird. Veränderungen ohne Erlaubnis des
  25. Autors (außer dem Konfigurationsteil) sind nicht erlaubt.
  26.  
  27. Besonderer Dank geht an Hego, für die vielen Vorschläge und Bugreports ;).
  28.  
  29.     Hinweise zur Installation:
  30.  
  31. WICHTIG: Diese Skript benötigt UNBEDINGT folgende Library:
  32.  
  33.     - rexxsupport.library
  34.  
  35. Einfach dieses Skript in das Rexx-Verzeichnis von ZP kopieren, die
  36. Feinabstimmung vornehmen und auf Wunsch die Zeile
  37. "F1:SYS:Rexxc/rx ZP:Rexx/AutoMaps.zprx %s"
  38. in die Datei 'fkeys.zp' einfügen.
  39.  
  40. Viel effektiver jedoch ist das Einfügen in die Skript-Datei
  41. 'stepin.zp' des entsprechenden Brettes. Dann sollte der Eintrag wie
  42. folgt lauten:
  43. "Run >NIL: SYS:Rexxc/rx ZP:Rexx/AutoMaps.zprx".
  44.  
  45.     Dabei bitte an das S-Bit denken !!!
  46.  
  47. Nähere Angaben zu den Dateien 'fkeys.zp' und 'stepin.zp' sind in der
  48. Guide-Datei zu Zodiac`s Point zu finden.
  49.  
  50. Die Benutzung und Installation dieses Skriptes erfolgt auf eigene
  51. Gefahr, und der Autor übernimmt keine Haftung für eventuelle Schäden
  52. jeder Art, die durch die Benutzung oder Installation erstanden sind
  53. oder entstehen können.
  54.  
  55. Für Anregungen, Fehlermeldungen und Verbesserungsvorschläge ist der
  56. Autor sehr dankbar und wie folgt zu erreichen:
  57.  
  58.     Björn Koch          H.Humpel@NOSTLGIC.oche.de
  59.  
  60. */
  61.  
  62. /* Die Feinabstimmung: (Beginn Konfigurationsteil) */
  63.  
  64. MisterMaps = 'MAPS@NOSTLGIC.OCHE.DE'        /* Genaue Adresse von MAPS */
  65. MapsAnfordern = 'LIST BRETTER'              /* Anforderung der Brettliste */
  66. MapsListMy = 'LIST MY BRETTER'              /* Anforderung der bestellten Bretter */
  67. MapsBrettliste = 'BRETTLISTE'               /* Das gibt MAPS als Brettliste wieder */
  68. MapsMyBretter = 'Bisher bestellte Bretter'  /* Das gibt MAPS als MyBretter wieder */
  69. MapsBrettBestellung = 'ADD'                 /* So bestellt man Bretter */
  70.  
  71. TemporaerDatei = 'T:Brettliste'         /* Die Dummy-Datei */
  72. ZPBMBrettliste = 'ZP:Brettliste.zp' /* Hier liegt die Liste fuer ZPBM */
  73. MyListe = 'ZP:MyBretter.zp'         /* Hier liegt die MyBretter-Liste */
  74.  
  75. AutoDeleteBL = 0    /* Soll die Brettliste wieder geloescht werden? */
  76. AutoDeleteML = 0    /* Soll die MyBretter-Liste wieder geloescht werden? */
  77. AutoRequestBL = 1   /* Soll die Brettliste automatisch bestellt werden? */
  78. AutoRequestML = 1   /* Soll die MyBretter-Liste automatisch bestellt werden? */
  79. AutoCheck = 1       /* Sollen die bestellten Bretter ueberprueft werden? */
  80. ListeStart = 3      /* In welcher zeile fangen die Eintraege an? */
  81. RequestDelay = 7    /* Wieviel Tage darf die Brettliste maximal alt sein? */
  82.  
  83.  
  84. /* AB HIER BITTE NICHTS MEHR ÄNDERN!!! (Ende Konfigurationsteil) */
  85.  
  86. OPTIONS RESULTS
  87.  
  88. PARSE ARG ZPPort
  89. IF ZPPort == "" THEN
  90.    ZPPort = 'ZPoint'
  91. ADDRESS VALUE ZPPort
  92.  
  93. IF (~SHOW('LIBRARIES', 'rexxsupport.library')) THEN
  94.    IF (~ADDLIB('rexxsupport.library', 0, -30, 0)) THEN DO
  95.       requestnotify 'Kann rexxsupport.library nicht öffnen!'
  96.       EXIT
  97.    END   
  98.  
  99. WHICHLEVEL
  100. Level=RESULT
  101. IF Level ~= "BOARD" THEN DO
  102.     REQUESTNOTIFY " Dieses Skript arbeitet nur, wenn Du in einem Brett bist!!"
  103.     EXIT
  104.   END
  105.  
  106. Heute = Date('INTERNAL')
  107. Cnzahl = 0
  108. MapsBrettliste = UPPER(MapsBrettListe)
  109. MapsMyBretter = UPPER(MapsMyBretter)
  110.  
  111. IF Exists(ZPBMBrettListe) THEN DO
  112.     LastDate = StateF(ZPBMBrettListe)
  113.     LastDate = Word(LastDate,5)
  114.     END
  115. ELSE
  116.     LastDate = Heute - RequestDelay
  117.  
  118. GUILOCK ON
  119.  
  120. IF (Heute - LastDate >= RequestDelay) THEN DO
  121.     IF (AutoRequestBL = 1) THEN DO
  122.     CALL MakeNullDatei
  123.     WRITEMESSAGE TemporaerDatei RECEIVER MisterMaps SUBJECT '"'MapsAnfordern'"'
  124.     Erfolg = RESULT
  125.     IF (Erfolg ~= '') THEN DO
  126.         ADDRESS COMMAND
  127.         'setdate' ZPBMBrettliste
  128.         ADDRESS VALUE ZPPort
  129.     END
  130.     END
  131.     IF (AutoRequestML = 1) THEN DO
  132.     CALL MakeNullDatei
  133.     WRITEMESSAGE TemporaerDatei RECEIVER MisterMaps SUBJECT '"'MapsListMy'"'
  134.     Erfolg = RESULT
  135.     END
  136.     END
  137. ELSE DO
  138.     SELECTMESSAGE NONE
  139.     JUMPTOMESSAGE 1
  140.     Keine = 0
  141.     DO WHILE (Keine = 0)
  142.     JUMPTOMESSAGE NAME MisterMaps
  143.     IF ~RC THEN
  144.         Keine = 1
  145.     ELSE DO
  146.         MESSAGEINFO FULLSUBJECT
  147.         Betreff = UPPER(RESULT)
  148.         MESSAGEINFO AGE
  149.         MarkNeu = RESULT
  150.         IF Betreff = MapsBrettliste THEN
  151.         IF MarkNeu = NEW THEN
  152.             CALL NeueBrettListe
  153.         IF Betreff = MapsMyBretter THEN
  154.         IF MarkNeu = NEW THEN
  155.             CALL NeueMyListe
  156.     END
  157.     DOWN 1
  158.     IF (RC = 0) THEN
  159.         Keine = 1
  160.     END
  161.  
  162. END
  163.  
  164. GUILOCK OFF
  165.  
  166. ADDRESS COMMAND
  167. IF Exists(TemporaerDatei) THEN
  168.     'delete >NIL:' TemporaerDatei
  169.  
  170. EXIT
  171.  
  172.  
  173. /* Die Unterroutinen... */
  174.  
  175. MakeNullDatei:
  176.     CALL OPEN('DummyDatei',TemporaerDatei,'W')
  177.     Erfolg = WRITELN('DummyDatei','')
  178.     CALL CLOSE('DummyDatei')
  179. RETURN
  180.  
  181.  
  182. NeueBrettListe:
  183.     SAVEMESSAGEBODY TemporaerDatei
  184.     ADDRESS COMMAND
  185.     'copy' TemporaerDatei ZPBMBrettliste
  186.     'delete >NIL:' TemporaerDatei
  187.     ADDRESS VALUE ZPPort
  188.     IF (AutoDeleteBL = 1) THEN
  189.     DELETE ONE                             
  190.     ELSE
  191.     MARKASOLD
  192. RETURN
  193.  
  194.  
  195. NeueMyListe:
  196.     SAVEMESSAGEBODY TemporaerDatei
  197.     IF (AutoCheck = 1) THEN
  198.     IF EXISTS(MyListe) THEN
  199.         CALL CheckMyListe
  200.     ADDRESS COMMAND
  201.     'copy' TemporaerDatei MyListe
  202.     'delete >NIL:' TemporaerDatei
  203.     ADDRESS VALUE ZPPort
  204.     IF (Cnzahl >= 1) THEN
  205.     CALL BrettBestellen
  206.     IF (AutoDeleteML = 1) THEN
  207.     DELETE ONE       
  208.     ELSE
  209.     MARKASOLD   
  210. RETURN
  211.  
  212.  
  213. CheckMyListe:
  214.     CALL Open('NeueListe',TemporaerDatei,'R')
  215.     Anzahl = 1
  216.     DO WHILE Anzahl < ListeStart
  217.     RESULT = READLN('NeueListe')
  218.     Anzahl = Anzahl + 1
  219.     END
  220.     Anzahl = 0
  221.     DO WHILE ~EOF('NeueListe')
  222.     Anzahl = Anzahl + 1
  223.     NeuBrett.Anzahl = ReadLn('NeueListe')
  224.     END
  225.     CALL CLOSE('NeueListe')
  226.  
  227.     CALL Open('AlteListe',MyListe,'R')
  228.     Bnzahl = 1
  229.     DO WHILE Bnzahl < ListeStart
  230.     RESULT = ReadLn('AlteListe')
  231.     Bnzahl = Bnzahl + 1
  232.     END
  233.     Bnzahl = 0
  234.     DO WHILE ~EOF('AlteListe')
  235.     Bnzahl = Bnzahl + 1
  236.     AltBrett.Bnzahl = ReadLn('AlteListe')
  237.     END
  238.     CALL Close('AlteListe')
  239.  
  240.     StimmtNoch = 1
  241.     StimmtBis = 0
  242.     Cnzahl = 0
  243.     DO j = 1 TO Bnzahl-1
  244.     IF (StimmtNoch = 1) THEN
  245.         StimmtBis = StimmtBis + 1
  246.     IstDa = 0
  247.     DO i = StimmtBis TO Anzahl-1 WHILE ~IstDa
  248.         dummy = AltBrett.j
  249.         dummy = NeuBrett.i
  250.         IF AltBrett.j = NeuBrett.i THEN
  251.         IstDa = 1
  252.         ELSE
  253.         StimmtNoch = 0
  254.     END
  255.     IF ~IstDa THEN DO
  256.         Cnzahl = Cnzahl + 1
  257.         FehlBrett.Cnzahl = AltBrett.j
  258.         END
  259.     END
  260. RETURN
  261.  
  262.  
  263. BrettBestellen:
  264.     CALL OPEN('DummyDatei',TemporaerDatei,'W')
  265.     DO i = 1 TO Cnzahl
  266.     String = "Das Brett "||FehlBrett.i||" ist nicht mehr bestellt!!  Soll ich es neu bestellen?"
  267.     REQUESTRESPONSE String
  268.     IF (RC) THEN
  269.         Erfolg = WriteLn('DummyDatei',FehlBrett.i)
  270.     END
  271.     CALL CLOSE('DummyDatei')   
  272.     WRITEMESSAGE TemporaerDatei RECEIVER MisterMaps SUBJECT '"'MapsBrettBestellung'"'
  273. RETURN
  274.  
  275. /* ... und ENDE! */
  276.  
  277.